In an effort to increase efficiency of computing resources, there have been efforts to design “virtual” machines. The concept of virtualization broadly describes the separation of a resource (e.g., computing resource) and/or request for a service from the underlying physical delivery of that service. In one example, with regards to virtual memory, computer software gains access to more memory than is physically installed via the background swapping of data to disk storage. Similarly, virtualization techniques can be applied to other information technology (IT) infrastructure layers such as networks, storage, laptop hardware, server hardware, operating systems, and/or applications.
Through virtualization, the virtual infrastructure provides a layer of abstraction between computing, storage, networking hardware, etc., and the applications running on it and enables a more efficient utilization of computing resources. In general, before virtualization, a single computer is associated with a single operating system image. The machine's hardware and software is tightly coupled, and running multiple applications on the same machine can create conflict. Moreover, the machine is often underutilized and inflexible, which all can lead to an inefficient use of computing resources. In contrast, with virtualization, the operating system and applications are no longer tightly coupled to a particular set of hardware. Advantageously, the virtualized infrastructure allows IT administrators to manage pooled resources across an enterprise, creating a more responsive and dynamic environment.